from openai import OpenAI
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')))
from executor.graph.llm_engine import client
def task_to_yaml(task_description: str) -> str:
    """
    将用户的自然语言任务描述转换为 YAML 格式的协作方案。

    参数:
        task_description (str): 用户的任务描述。
        client (OpenAI): OpenAI 客户端实例。

    返回:
        str: YAML 格式的协作方案。
    """
    system_prompt = """
你是一名智能体协作系统的设计专家，善于根据任务需求设计高效的多智能体协作流程。

你的目标是：根据用户给出的一个自然语言任务描述，输出一个合理的“智能体协作方案”，以便用于自动化执行任务。

请按照以下结构，先思考，再输出 YAML 配置：

---

1. 🎯 任务分解：将任务拆分为多个子目标
2. 🧠 智能体列表：列出每个智能体的职责与任务
3. 🔁 协作方式：说明它们之间的依赖顺序
4. ✅ 执行流程：总结从开始到结束的流转路径

---

请在分析结束后，**输出以下 YAML 配置（注意是 YAML 格式）：**

```yaml
task: "{{用户原始任务}}"
agents:
  - name: ...
    role: ...
    inputs: [ ... ]   # 来自哪些上游Agent
  ...
workflow:
  - from: AgentA
    to: AgentB
  ...

"""

    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": task_description}
    ]

    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages
    )

    return response.choices[0].message.content
if __name__ == "__main__":
    yaml = task_to_yaml(" 撰写AI辅助医疗的研究综述")
    import re
    match = re.search( r'```yaml\n(.*?)\n```', yaml, re.DOTALL)
    if match:
        yaml = match.group(1).strip()
        print("提取的 YAML 内容：\n", yaml)
    from executor.graph.general_yaml_parser import build_graph
    graph = build_graph(yaml)
    graph.invoke({"done": [], "rsults":{}})